<?php
/**
 * @link http://www.tintsoft.com/
 * @copyright Copyright (c) 2013 TintSoft LLC
 * @license http://www.tintsoft.com/license/
 */
namespace Leaps\Base;
abstract class ServiceProvider{

    /**
     * 应用程序实例
     *
     * @var \Leaps\Base\Application
     */
    protected $app;

    /**
     * 是否延迟装载
     *
     * @var bool
     */
    protected $defer = false;

    /**
     * 创建一个新的服务提供者实例。
     *
     * @param \Leaps\Base\Application $app
     * @return void
     */
    public function __construct($app)
    {
        $this->app = $app;
    }

    /**
     * 启动应用程序事件
     *
     * @return void
     */
    public function boot()
    {
    }

    /**
     * 注册服务提供者
     *
     * @return void
     */
    abstract public function register();

    /**
     * 获得所提供的服务提供者
     *
     * @return array
     */
    public function provides()
    {
        return array ();
    }

    /**
     * 装载提供者是否是延迟的
     *
     * @return bool
     */
    public function isDeferred()
    {
        return $this->defer;
    }
}